package model

import (
	"ginblog/utils/errmsg"
	"gorm.io/gorm"
)

type Category struct {
	ID   uint   `gorm:"primary_key;auto_increment" json:"id"`
	Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// CheckCategory  检查分类
func CheckCategory(name string) (code int) {
	var category Category
	db.Select("id").Where("name=?", name).First(&category)
	if category.ID > 0 {
		return errmsg.ERROR_CATENAME_USED
	}
	return errmsg.SUCCSE
}

// CreatCategory  创建分类
func CreatCategory(data *Category) int {
	err := db.Create(&data).Error
	if err != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCSE
}

// GetCategory  获取分类及分页
func GetCategory(pageSize int, pageNum int) []Category {

	var category []Category
	err = db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&category).Error
	if err != nil && err != gorm.ErrRecordNotFound {
		return nil
	}
	return category
}

// DelCategory 删除分类
func DelCategory(id int) int {
	var category Category
	db.Select("id").Where("id=?", id).First(&category)
	if category.ID >= 1 {
		db.Where("id = ?", id).Delete(&category)
		return errmsg.SUCCSE
	}
	return errmsg.ERROR_CATE_NOT_EXIST
}

// EdtCategory 修改分类
func EdtCategory(id int, data *Category) int {
	var category Category

	var maps = make(map[string]interface{})
	maps["Name"] = data.Name
	errs := db.Model(&category).Where("id=?", id).Updates(maps).Error
	if errs != nil {
		return errmsg.ERROR
	}
	return errmsg.SUCCSE
}
